#Demo8-1.ps1, utilise les loggers de la d?mo 8
#Utilisation d'une propri?t? globale, voir Package

$LogPattern = "[%thread] %-5level %property{CallStack} -%message%newline"

Function Une { $LogMain.Info("Dans la fonction Une")
Deux }

Function Deux { $LogMain.Info("Dans la fonction Deux")
Trois
}

Function Trois { $LogMain.Info("Dans la fonction Trois") }

 #D?clare une propri?t? active globale
. .\PackageDebugTools.ps1
Set-LogActiveProperty "CallStack" { $(ParseStack $(Get-CallStack)) }

 #Met ? jour le layout de l'appender ROOT de LoggerMain
Update-LogLayout $LogMain.Logger.Parent.Appenders[0] $LogPattern

$LogMain.Info("Appel la fonction Une ")
Une
$LogMain.Info("Fin")

 #Met ? jour le layout de l'appender nomm? "ConsoleColoris?" de LoggerMain
Update-LogLayout ( Get-LoggerAppender $LogMain  "ConsoleColoris?") $LogPattern
 #Les 2 appenders utilisent la propri?t? active 'CallStack'
Une

"Code de la m?thode ToString() de la propri?t? globale nomm?e 'CallStack' = $(Get-GlobalPropertyScript 'CallStack')"
#Modifie une propri?t? active globale
Set-LogActiveProperty "CallStack" {"Bonjour"}
Une

$global:Tab=@(1,2,3)
 #Ici on appelle la m?thode ToString de l'objet System.Array 
 #Et on r?f?rence l'adresse du tableau courant. Si on le modifie par $Tab+=4, la r?f?rence m?moris?e ne pointera pas sur le nouveau tableau
 #On peut r?f?rencer n'importe quel objet, mais ce sera toujours sa m?thode ToString qui sera appell?
Set-LogGlobalProperty "CallStack" $Tab
 #Provoque une exception car la m?thode toString est en code natif
"Code de la m?thode ToString() de la propri?t? globale nomm?e 'CallStack' = $(Get-GlobalPropertyScript 'CallStack')"

Stop-Log
